#pragma once

#include <cstdint>
#include <string>
#include <array>
#include <vector>

namespace eniac
{

std::uint32_t ipv4_to_net_int(const std::string& ipv4);

std::string host_int_to_ipv4(const uint32_t ipv4);

std::array<std::uint8_t, 16> ipv6_to_array(const std::string& ipv6);

std::string array_to_ipv6(const std::array<std::uint8_t, 16>& ipv6);

std::string int_to_string(std::int64_t value);

std::vector<std::string> split_string(const std::string& origin_string, const char delimiter);

bool is_valid_ipv4_ip(const std::string& ip);

} /* namespace eniac */